﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Text;
using tumblr4wp7.Models;
using System.Net.NetworkInformation;

namespace tumblr4wp7
{
	public partial class MainPage : PhoneApplicationPage
	{
		// Constructor
		public MainPage()
		{
			InitializeComponent();
		}

		private void btnGo_Click(object sender, RoutedEventArgs e)
		{
            var user = txtUser.Text.Trim();
            if (string.IsNullOrWhiteSpace(user))
            {
                txtBloco.Text = "Por favor, digite um nome de usuário!";
            }
            else
            {
                txtBloco.Text = "Por favor, aguarde...";
                if (NetworkInterface.GetIsNetworkAvailable())
                {
                    WebClient t = new WebClient();
                    t.DownloadStringCompleted += new DownloadStringCompletedEventHandler(t_DownloadStringCompleted);
                    t.DownloadStringAsync(new Uri("http://api.tumblr.com/v2/blog/" + user + ".tumblr.com/info?api_key=N9C9NyVRRF5Lbq9QByBaEYuchNQ72ip4wvXM4slC90957FrXjD"));
                }
                else
                {
                    var texto = new StringBuilder();
                    texto.Append("Não foi possível acessar as informações!");
                    texto.AppendLine();
                    texto.AppendLine();
                    texto.Append("Parece que você não está conectado...");
                    texto.AppendLine();
                    texto.Append("Por favor, verifique se você tem acesso à internet e tente novamente...");
                    txtBloco.Text = texto.ToString();
                }
            }
		}

		void t_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
		{
            if (e.Error != null)
            {
                if (e.Error.Message.Equals("The remote server returned an error: NotFound."))
                {
                    txtBloco.Text = "Usuário não encontrado!";
                }
                else
                {
                    txtBloco.Text = e.Error.Message;
                }
                return;
            }

			var json1 = JObject.Parse(e.Result);
			var info = JsonConvert.DeserializeObject<info>(e.Result);
			var texto = new StringBuilder();

            texto.AppendFormat("Usuário \"{0}\" localizado com sucesso!", txtUser.Text);
            texto.AppendLine();
            texto.AppendLine();
			texto.AppendFormat("Title: {0}", info.response.blog.title);
			texto.AppendLine();
			texto.AppendFormat("Posts: {0}", info.response.blog.posts);
			texto.AppendLine();
			texto.AppendFormat("Name: {0}", info.response.blog.name);
			texto.AppendLine();
			texto.AppendFormat("Url: {0}", info.response.blog.url);
			texto.AppendLine();
			texto.AppendFormat("Updated: {0}", info.response.blog.updated);
			texto.AppendLine();
			var desc = info.response.blog.description == "" ? "Nenhuma descrição" : info.response.blog.description;
			texto.AppendFormat("Description: {0}", desc);
			texto.AppendLine();
			texto.AppendFormat("Ask: {0}", info.response.blog.ask);
			texto.AppendLine();
			texto.AppendFormat("Ask_Anon: {0}", info.response.blog.ask_anon);
			texto.AppendLine();
			texto.AppendFormat("Likes: {0}", info.response.blog.likes);
			txtBloco.Text = texto.ToString();
		}
        
        private void txtUser_DoubleTap(object sender, GestureEventArgs e)
        {
            txtUser.SelectAll();
        }
	}
}